Hibernate PreparedStatement Parameter Logging
Immer wieder ein Problem: wie überrede ich Hibernate, die Parameter auszugeben, die in die PreparedStatements eingesetzt werden?
Hibernate loggt mit log4j - also muss eigentlich nur ein entsprechender Log-Level gesetzt werden und man sieht die Log-Ausgaben.
Weit gefehlt, wenn man vermutet, dass folgendes Statement in der log4j.properties ausreicht:
Diese Einstellung loggt zwar ziemlich viel von Hibernate (u.a. die PreparedStatements, die Hibernate ausführt) und macht das System dann ziemlich langsam :o) - gibt aber nicht die gewünschten PreparedStatement-Parameter aus.
In vielen Foren weit verbreitet ist folgender Hinweis:
Diese Einstellung gibt ausschließlich die PreparedStatements aus und erspart somit den Rest des umfangreichen Hibernate-Loggings. Die Parameter für das PreparedStatement fehlen aber trotzdem.
Gestern ging ich dann ziemlich lange auf die Suche und fand dann irgenwann in einem Foren-Eintrag folgenden Hinweis:
Wichtig ist hierbei wirklich der Hinweis auf TRACE, weil selbst in DEBUG nichts zu sehen ist...
Beide Einstellungen zusammen ermöglichen dann ein detailliertes Nachverfolgen der ausgeführten SQL-Statements:
Hibernate loggt mit log4j - also muss eigentlich nur ein entsprechender Log-Level gesetzt werden und man sieht die Log-Ausgaben.
Weit gefehlt, wenn man vermutet, dass folgendes Statement in der log4j.properties ausreicht:
logger.org.hibernate=DEBUG
Diese Einstellung loggt zwar ziemlich viel von Hibernate (u.a. die PreparedStatements, die Hibernate ausführt) und macht das System dann ziemlich langsam :o) - gibt aber nicht die gewünschten PreparedStatement-Parameter aus.
In vielen Foren weit verbreitet ist folgender Hinweis:
log4j.logger.org.hibernate.SQL=DEBUG
Diese Einstellung gibt ausschließlich die PreparedStatements aus und erspart somit den Rest des umfangreichen Hibernate-Loggings. Die Parameter für das PreparedStatement fehlen aber trotzdem.
Gestern ging ich dann ziemlich lange auf die Suche und fand dann irgenwann in einem Foren-Eintrag folgenden Hinweis:
log4j.logger.org.hibernate.type=TRACE
Wichtig ist hierbei wirklich der Hinweis auf TRACE, weil selbst in DEBUG nichts zu sehen ist...
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
Beide Einstellungen zusammen ermöglichen dann ein detailliertes Nachverfolgen der ausgeführten SQL-Statements:
DEBUG - {SQL} - select persistent0_.ID as ID8_, persistent0_.NAME as NAME8_, persistent0_.VERSION as VERSION8_, persistent0_.BUNDLE_COMMENT as BUNDLE4_8_, persistent0_.BUNDLE_DESCRIPTION as BUNDLE5_8_, persistent0_.TYPE as TYPE8_, persistent0_.CONTENT as CONTENT8_, persistent0_.VALID_FROM as VALID8_8_, persistent0_.VALID_TO as VALID9_8_, persistent0_.INSERTED_BY as INSERTED10_8_, persistent0_.INSERTED_AT as INSERTED11_8_, persistent0_.UPDATED_BY as UPDATED12_8_, persistent0_.UPDATED_AT as UPDATED13_8_ from rzanner.BRM_PERSISTENT_BUNDLE persistent0_ where persistent0_.NAME=? and persistent0_.VERSION=?
TRACE - {StringType} - binding 'blbb.samples.config' to parameter: 1
TRACE - {StringType} - binding '1.3.0.0-5-01-0-SNAPSHOT' to parameter: 2
TRACE - {LongType} - returning '112817' as column: ID8_
TRACE - {StringType} - returning 'blbb.samples.config' as column: NAME8_
TRACE - {StringType} - returning '1.3.0.0-5-01-0-SNAPSHOT' as column: VERSION8_
TRACE - {DateType} - returning '04 Juni 2009' as column: VALID8_8_
TRACE - {DateType} - returning null as column: VALID9_8_
TRACE - {StringType} - returning 'test:rzanner' as column: INSERTED10_8_
TRACE - {TimestampType} - returning '2009-06-04 16:36:08' as column: INSERTED11_8_
TRACE - {StringType} - returning null as column: UPDATED12_8_
TRACE - {TimestampType} - returning null as column: UPDATED13_8_
Labels: HowTo

0 Comments:
Kommentar veröffentlichen
<< Home